<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Symbol</title>
  </head>
  <body>
    <script>
      //Symbol 原始数据类型 独一无二的值，常用来作为对象唯一的属性名
      //Symbol 不能运算
      //Symbol 不能使用 . 运算符，必须用[]

      //Symbol('parmas')
      //let sy = Symbol("mySymbol");
      //let sy = Symbol.for("mySymbol");

      //相同参数的Symbol不相等,但是用对像式创建相等
      console.log(Symbol("a") == Symbol("a")); //false
      console.log(Symbol.for("b") == Symbol.for("b")); //true

      //对象写法
      const key1 = Symbol("key1");
      const key2 = Symbol("key2");
      let syObject = {
        key1: "我不是Symbol",
        [key1]: "key1",
      };
      syObject[key2] = "key2";

      console.log(syObject);

      //必须使用[]
      console.log(syObject.key1); //我不是Symbol
      console.log(syObject[key1]); //'key1'

      // tips:打印syObject[Symbol['key1']]输出为undefined，由于每次调用Symbol时都是独一无二的。
      // 在创建symbol是最好先保存下来，以免丢失
    </script>
  </body>
</html>
